library(ggplot2)
library(gganimate)

# 使用gganimate 必须安装ImageMagick
# 而且 目前gganimate更新了调用方法

# transition_*定义了数据应该如何展开以及它与时间的关系。
# view_*定义位置比例应如何沿动画更改。
# shadow_*定义如何在给定的时间点呈现来自其他时间点的数据。
# enter_*/ exit_*定义新数据应如何显示以及旧数据在动画过程中应如何消失。
# ease_aes定义了在过渡期间应该如何进行过渡。

ggplot(mtcars, aes(factor(cyl), mpg)) + 
    geom_boxplot() + 
    # Here comes the gganimate code
    transition_states(
        gear,
        transition_length = 2,
        state_length = 1
    ) +
    enter_fade() + 
    exit_shrink() +
    ease_aes('sine-in-out')


library(gapminder)
ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, colour = country)) +
    geom_point(alpha = 0.7, show.legend = FALSE) +
    scale_colour_manual(values = country_colors) +
    scale_size(range = c(2, 12)) +
    scale_x_log10() +
    facet_wrap(~continent) +
    # Here comes the gganimate specific bits
    labs(title = 'Year: {frame_time}', x = 'GDP per capita', y = 'life expectancy') +
    transition_time(year) +
    ease_aes('linear')
